/*
 * @Description: file content
 * @Author: ZeT1an
 * @Date: 2022-01-06 09:27:49
 * @LastEditors: ZeT1an
 * @LastEditTime: 2022-01-06 10:29:32
 * @LastEditContent: 
 */
/**
 * JS中函数作为第一公民的两个特征
 * 1.JS中的函数的使用是非常灵活的
 * 2.在JS中，一个函数，可以作为另外一个函数的参数，也可以作为另外一个函数的返回值来使用
 */

/**
 * 什么是高阶函数
 * 1.在JS中，一个函数接收另外一个函数作为参数，或者返回一个函数，称为高阶函数
 */

/**
 * JS数组常用的6个高阶函数
 * filter
 * map
 * reduce
 * find
 * findIndex
 * forEach
 */

/**
 * 组成闭包的2部分：函数 + 可以访问的自由变量
 */

/**
 * 函数和方法的区别
 * 使用对象调用的函数称为方法
 */

/**
 * 闭包定义的3点总结：
 * 1.一个普通的函数，如果它可以访问外层作用域的自由变量，那么这个函数称为闭包。
 * 2.广义上来说，在JavaScript中每一个函数都是闭包
 * 3.狭义上来说，只有访问了外层作用域变量的函数，才能称之为闭包。
 */

/**
 * 7.什么是闭包的内存泄漏
 * 1.当闭包的函数依赖的外层作用域变量不再被使用，但无法得到释放的情况，称为闭包的内存泄漏。
 */

/**
 * 怎么解决闭包的内存泄露
 * 将闭包的函数引用置为null，那么函数对应的上层作用域AO对象就不可达了，在GC的下一次检测中，它们就会被释放。
 */

/**
 * 9.理解闭包的内存图
 */

/**
 * V8引擎的实现中，一个整数占据4个字节。
 */

/**
 * 
 */